package com.cskaoyan.object01.syntax.keyimport.onepackage;

//import com.cskaoyan.object01.syntax.keyimport.anotherpackage.A;

// 智能导报语句
import com.cskaoyan.object01.syntax.keyimport.anotherpackage.*;
import com.cskaoyan.object01.syntax.keyimport.anotherpackage.subpackage.E;

/*
     java中如何唯一确定一个类？ 类的全限定名唯一区分一个类

     在类名前面加上类所属的包名，中间用句点“.”分隔，称为类的完全限定名(Full Qualified Name)，
     简称类的限定名，或全限定名

      com.cskaoyan.object01.syntax.keyimport.A
      com.cskaoyan.object01.syntax.keyimport.anotherpackage.A


      当在类体中使用了与当前类不同包的类名时，编译器编译时因为无法找到该类的定义而失败，
      有两个解决办法：
        1.使用不同包类的完全限定名
        2.使用import声明，为编译器提供该类的定义信息

     import注意事项
        1. import声明一般紧跟在package声明之后，必须在类声明之前，其基本语法如下:
                 import <类的完全限定名>;

        2.Java语言核心包java.lang包中的类将被隐式导入，可以直接使用其中的类

        3.import声明提供了一种包的智能导入方式：
           import <包名>.*；
              a. 包中的类将根据需要导入，避免使用多条import声明
              b. 智能导报语句, 不会递归导入子包中的类




 */
public class Demo1 {

    public static void main(String[] args) {

        // 第一种解决方式
//        com.cskaoyan.object01.syntax.keyimport.anotherpackage.A a
//                = new com.cskaoyan.object01.syntax.keyimport.anotherpackage.A();

        // 第二种方式
        //A a1 = new A();

       /*        如果说我们在同一个包下定义了类A
                 1. 如果在同一个包定义同名类，默认情况下我们同一个包下的同名类
                 2. 但是如果我们要使用另外一个包中定义的同名类，import
        */
        A a = new A();

        // 创建一个字符串对象
        // String 类 java.lang
        // Java语言核心包java.lang包中的类将被隐式导入，可以直接使用其中的类
        String s = new String();

        // 只能导包语句，一次导入多个类
        B b = new B();
        C c = new C();

        // 智能导包语句，不会递归导包
        E e = new E();



    }
}
